# -*- coding: utf-8 -*-
"""
Created on Sat Aug 19 19:59:21 2023

@author: skunk69
"""

import json

chinese_name = u'学龄前儿童活动调查表'
english_name = 'Preschool Activities Inventory'
abbreviation = 'PSAI'
category = u'行为方式量表'

outline = u"""学前儿童活动调查表（Preschool Activities Inventory, PSAI）由英国心理学家格鲁姆布卡等人20世纪90年代初编制，用于评定5岁或5岁以下学前儿童对性别身份的识别，由儿童的母亲或其他照顾者评定。"""

instruction = u"""以下是一些反映学龄前儿童喜欢的玩具以及活动和个性表现的题目，请您根据该儿童近一个月玩玩具和活动的情况以及平时的个性表现，对每一项目在选项“没有”、“很少”、“有时有”、“常有”、“很常见”中作出合适的一项选择。"""

hints = {}
hints[1] = u"""第一部分（A）玩具
在过去的一个月中，您孩子玩以下玩具的频度："""
hints[8] = u"""第二部分（B）活动
请回答您孩子在过去一个月中忙于以下活动的频度："""
hints[19] = u"""第三部分（C）个性特征
请回答您孩子表现以下个性特征的频度"""

with open('PSAI.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('、',maxsplit=1)
    items[key.strip()] = value.strip()

reverse_items = []
scales = [u'男性化',u'女性化']
L1 = [1,3,5,6,11,12,14,15,17,19,20,21]
LL = {l for l in L1}^{i for i in range(1,25)}
L2 = [l for l in LL]

scales_items = [L1,L2]
factors = []
factors_scales = []
rating = [u'没有',u'很少',u'有时有',u'常有',u'很常见']
score_rules = list(range(1,6))

contents = {
    'instruction':instruction,
    'hints':hints,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""由儿童的母亲或其他照顾者评定，用于评定5岁或5岁以下学前儿童对性别身份的识别。"""

reliability = u"""评分者之间的信度：0.6824；条目与总分的一致性：＞0.3；同质性信度Cronbachα系数0.6740；重测信度：0.8976。"""
validity = u"""主成分分析所提取的三个因素与原作者的三个因素所含条目基本一致，可以解释总分量的46.5%。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""将各维度题目相加得到各维度分。
男性化条目有：A1，A3，A5，A6，B4，B5，B7，B8，B10，C1，C2，C3
女性化条目有：A2，A4，A7，B1，B2，B3，B6，B9，B11，C4，C5，C6
总分=（男性化分-女性化分）×1.1+48.25。
得分越高提示男性化倾向大，得分越低提示女性化倾向大。"""

applications = u"""在我国部分地区使用的过程中，母亲评定和幼儿园老师评定的得分有高度相关，说明幼儿园老师也可以使用该量表对学前儿童的性别角色行为进行评估。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)